package com.lam.system.service;

import java.util.List;
import java.util.Set;

import com.lam.common.components.easyexcel.imp.model.ImportWrapper;
import com.lam.system.entity.SysUser;
import com.lam.system.entity.imp.SysUserImp;
import com.lam.system.param.SysUserParam;

/**
 * 用户Service接口
 *
 * @author admin
 * @date 2022-08-04
 */
public interface SysUserService {

    /**
     * 查询用户
     *
     * @param id 用户ID
     * @return 单个对象
     */
    public SysUser selectById(String id);
    /**
     * 查询用户
     *
     * @param id 用户ID
     * @return 单个对象
     */
    public SysUser selectByIdWithDept(String id);

    /**
     * 根据用户名查询
     *
     * @param username
     * @return SysUser
     */
    SysUser selectByUsername(String username);

    /**
     * 根据uid查询用户的角色编码
     *
     * @param uid
     * @return Set
     */
    Set<String> loadUserRoles(String uid);

    /**
     * 根据uid查询用户的权限标识
     *
     * @param uid
     * @return Set
     */
    Set<String> loadUserAdmAuths(String uid);
    
    /**
     * 查询用户列表
     *
     * @param param
     * @return 列表集合
     */
    public List<SysUser> selectList(SysUserParam param);
    /**
     * 查询用户列表
     *
     * @param param
     * @return 列表集合
     */
    public List<SysUser> toSelectList(SysUserParam param);

    /**
     * 新增用户
     *
     * @param SysUser
     * @return int
     */
    public int insert(SysUser SysUser);

    /**
     * 修改用户
     *
     * @param SysUser 变更对象
     * @return int
     */
    public int update(SysUser SysUser);

    int updateAvatar(String id, String avatar);
    
    /**
     * 删除用户信息
     *
     * @param id ID
     * @return int
     */
    public int deleteById(String id);

    /**
     * 导入数据
     * @param wrapper 数据包装对象
     */
    public void importData(ImportWrapper<SysUserImp, SysUser> wrapper);

    public int resetPwd(SysUserParam param);

	int updatePwd(SysUserParam param);
}
